xml.dll - mIRC XML Parser DLL

Ce DLL permet de créer des parsers XML et de définir des aliases ou signaux mIRC qui seront appelés en fonction des divers évènements recontrés lors du parsing d'un fichier ou d'un buffer. Il s'agit d'un parser de type évènementiel non-validateur.



Table des Matières



Introduction

Ce DLL a été développé pour permettre l'utilisation du format XML au sein du logiciel mIRC dans des conditions satisfaisantes en terme de flexibilité et de performance. Ce que fait ce DLL pourrait être entièrement réalisé en mIRC scripting mais les performances à niveau de fonctionnalité égale seraient bien différentes...

L'utilisateur créé des instances de parsers XML et défini ses propres aliases (commandes en générale) qui seront appelées par le DLL en fonctions des évènements XML rencontrés lors du parsing d'un fichier ou d'un buffer. L'utilisateur doit donc organiser lui même ses handlers aliases chargées de traiter les données que le parser leurs retourne.




Installation

Le fichier DLL est nommé xml.dll et peut être placé n'importe où du moment que mIRC (le script) connaisse son répertoire d'installation (pour pouvoir utiliser $dll ou /dll). Un répertoire contenant des espaces ne posera pas de problèmes.

Le DLL est livré dans un package .zip contenant également un fichier d'aide et de référence .html (ce fichier), les sources du DLL ainsi qu'un fichier .xml d'exemple et un fichier de script .mrc. Si ce n'est pas le cas, il est vivement recommandé de télécharger le dernier package officiel sur le site www.ScriptsDB.org, section DLLs. Dézippez le package à l'emplacement de votre choix. L'installation est terminée.




Utilisation du DLL

Pour appeller les fonctions du DLL, vous pouvez utiliser deux syntaxes :

/dll <xml.dll> <function> <parameters>
$dll(<xml.dll>,<function>,<parameters>)

La 2ieme syntaxe avec $dll() est recommandée car le DLL retourne dans ce cas une valeur indiquant un succes ou un échec. Les messages retournés sont S_OK ou E_<ERROR_CODE> en cas d'erreur. Les différentes erreurs sont listées pour chaque fonctions du DLL dans la partie Référence.

Le nombre de fonctions disponibles peut paraitre déroutant à première vue, mais il faut savoir que la plupart sont optionnelles et qu'un simple jeu de quelques fonctions suffit à effectuer la majorité des opérations les plus fréquentes en matière de parsing XML.

La manière de procéder la plus basique est de créer un parser (create_parser), associer des handlers aliases simples (set_handler_startelement, set_handler_endelement, set_handler_attribute et set_handler_chardata), associer un fichier xml (set_file), parser le fichier (parse_file) et finalement libérer le parser (free_parser).

Pour un exemple plus concret, allez voir la section Exemple de Script mIRC de ce document, mais également les deux fichiers .xml et .mrc fournis dans le package du DLL.

Les fonctions du DLL ont été renommées par rapport à la précédente version (0.0.1). Ces anciennes fonctions sont toujours supportées mais ne sont plus documentées. Allez voir la section Versions Changes pour plus d'informations.




Référence

Listing des fonctions du DLL à utiliser avec l'une des deux syntaxes décrites au chapitre précèdent. Pour chaque fonction, les paramètres entre < > sont requis et ceux entre [ ] sont optionnels.


  • Fonctions de Création de Parsers
  • Créé un parser nommé name. Ce nom, qui ne doit pas contenir d'espace, servira de handle (identifiant) pour les autres fonctions relatives à ce parser. Vous pouvez manipuler plusieurs parsers en même temps. Un maximum de 256 parsers simultanés est autorisé. Vous pouvez créer un parser déjà existant, et dans ce cas il sera resetté (file, buffer, handlers..).

    La fonction retourne S_OK ou en cas d'erreur: E_OUT_OF_MEMORY, E_TOO_MANY_PARSERS_ALLOCATED, E_INVALID_PARAMETERS

    Exemple:
    $dll(xml.dll,create_parser,demo)


    Détruit un parser précédement créé avec create_parser. Une fois vos opérations de parsing terminées, il est recommandé d'utiliser cette fonction pour libérer les ressources mémoire allouées au parser name.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    Exemple:
    $dll(xml.dll,free_parser,demo)



  • Fonctions de Parsing de Fichiers
  • Associe un fichier xml au parser. Si le fichier xml n'est pas précisé, et qu'un fichier était déjà associé au même parser, celui ci sera resetté (il n'y aura plus de fichier associé). Le fichier doit avoir un pathfile absolu ou alors relatif par rapport à mirc.exe. Vous n'êtes pas obligé d'entourer le nom du fichier par des " (quotes) si des espaces figurent dans son pathname.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    Exemple:
    $dll(xml.dll,set_file,demo config\settings.xml)


    Retourne le nom du fichier xml associé au parser. Si aucun fichier n'est associé, la fonction ne retourne rien ($null).

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    Exemple:
    $dll(xml.dll,get_file,demo)


    Parse le fichier précédement associé au parser avec set_file. Pendant le parsing du fichier, le parser appellera les handlers aliases qui auront été configurées grâce aux Fonctions des Handlers. Vous pouvez modifier "à la vollée" pendant le parsing les différentes handlers aliases.

    La fonction retourne S_OK ou en cas d'erreur: E_OUT_OF_MEMORY, E_INVALID_PARSER, E_INVALID_PARAMETERS, E_INVALID_FILE

    Exemple:
    $dll(xml.dll,parse_file,demo)



  • Fonctions de Parsing de Buffers


  • Un buffer est associé à chaque parser et peux recevoir des données XML sous forme de chaines de caractères. Ce buffer, limité à 4096 bytes, pourra être parsé de la même manière qu'un fichier.

    Ajoute xml_string à la fin du buffer du parser. Vous pouvez appeler cette fonction plusieurs fois de suite. Si la chaines XML est nulle, le buffer ne sera pas affecté. Il faut utiliser free_buffer pour le resetter.

    La fonction retourne S_OK ou en cas d'erreur: E_OUT_OF_MEMORY, E_INVALID_PARSER, E_INVALID_PARAMETERS

    Exemple:
    $dll(xml.dll,set_buffer,demo <node type="test">ok blah)
    $dll(xml.dll,set_buffer,demo <bl0x/></node>)
    


    Reset le buffer (le buffer du parser sera vidé).

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    Exemple:
    $dll(xml.dll,free_buffer,demo)


    Retourne les données du buffer sous forme de chaines de caractères. Comme le buffer peut contenir plus de données que mIRC peut en recevoir (limité à environ 900 bytes), les integers start et len peuvent être précisés optionnellement. Notez que l'index du premier caractère du buffer commence à 0 et non à 1. La fonction get_buffer_len permet de connaitre la taille du buffer.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    Exemple:
    $dll(xml.dll,get_buffer,demo)
    $dll(xml.dll,get_buffer,demo 8 100)
    


    Retourne la taille du buffer en bytes (caractères).

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    Exemple:
    $dll(xml.dll,get_buffer_len,demo)


    Parse le buffer du parser. Lors du parsing, le DLL appellera les handlers aliases qui auront été configurées grâce aux Fonctions des Handlers. Vous pouvez modifier "à la vollée" pendant le parsing les différentes handlers aliases.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    Exemple:
    $dll(xml.dll,parse_buffer,demo)



  • Fonctions des Handlers


  • Chaque fonctions set_handler_* permet d'associer une handler_alias (ou commande) mIRC à un évenement XML spécifique. Si handler_alias n'est pas précisée et qu'une précédente alias avait été configurée, celle ci sera resettée et le parser ignorera cette étape lors du parsing.

    Le paramètre handler_alias dans les fonctions décrites ci-dessous peut être n'importe quel type de commande valide dans mIRC (commande, custom alias, signal ..) et peut donc contenir des espaces et paramètres spécifiques. S'il s'agit d'une custom alias, elle doit être globale (pas de locale: alias -l).

    Associe une alias mIRC que le parser appellera chaque fois qu'un élément XML (aussi appellé tag ou node) d'ouverture sera rencontré lors du parsing d'un fichier ou d'un buffer.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit les paramètres: <name> <startelement>

    Exemple:
    <!-- XML -->
    <element>
      <element />
    
    ; mIRC
    $dll(xml.dll,set_handler_startelement,demo startel)
    alias startel {
      ; $1 = demo
      ; $2 = nom de l'élément d'ouverture courant
    }
    

    Exemple avec un /signal :
    $dll(xml.dll,set_handler_startelement,demo .signal -n startel)
    on *:signal:startel: {
      ; $1 = demo
      ; $2 = nom de l'élément d'ouverture courant
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'un élément XML de fermeture sera rencontré.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit les paramètres: <name> <endelement>

    Exemple:
    <!-- XML -->
    </element>
    <element />
    
    ; mIRC
    $dll(xml.dll,set_handler_endelement,demo endel)
    alias endel {
      ; $1 = demo
      ; $2 = nom de l'élément de fermeture courant
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'un attribut d'un élement XML sera rencontré lors du parsing. handler_alias sera appellée autant de fois qu'il y a d'attributs dans l'élement.
    Notez que le parsing des attributs est aussi compatible avec la syntaxe HTML: quand " et ' sont homis autour des valeurs des attributs.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit les paramètres: <name> <element> <attribute_name> <attribute_value>

    Exemple:
    <!-- XML -->
    <element attrib="valeur"
             autre='autre valeur'>
    
    ; mIRC
    $dll(xml.dll,set_handler_attribute,demo att)
    alias att {
      ; $1 = demo
      ; $2 = nom de l'élément courant
      ; $3 = nom de l'attribut courant
      ; $4- = valeur de l'attribut
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'un début de données ne faisant pas partie d'entités XML sera rencontré (donc les "data").

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit le paramètre: <name>

    Exemple:
    <!-- XML -->
    <element>debut de chardata
    
    ; mIRC
    $dll(xml.dll,set_handler_startchardata,demo startdata)
    alias startdata {
      ; $1 = demo
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'une fin de données ne faisant pas partie d'entités XML sera rencontrée (donc les "data").

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit le paramètre: <name>

    Exemple:
    <!-- XML -->
    fin de chardata</element>
    
    ; mIRC
    $dll(xml.dll,set_handler_endchardata,demo enddata)
    alias enddata {
      ; $1 = demo
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'une ligne de données ne faisant pas partie d'entités XML sera rencontrée (donc les "data").

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit les paramètres: <name> <data>

    Exemple:
    <!-- XML -->
    <element>
      chardata
      autre ligne de chardata
    </element>
    
    ; mIRC
    $dll(xml.dll,set_handler_chardata,demo data)
    alias data {
      ; $1 = demo
      ; $2- = valeur de la ligne de données courante
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'un début de commentaire dans le XML sera rencontré.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit le paramètre: <name>

    Exemple:
    <!-- XML -->
    <!-- debut de commentaire
    
    ; mIRC
    $dll(xml.dll,set_handler_startcomment,demo startcmt)
    alias startcmt {
      ; $1 = demo
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'une fin de commentaire dans le XML sera rencontrée.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit le paramètre: <name>

    Exemple:
    <!-- XML -->
    fin de commentaire -->
    
    ; mIRC
    $dll(xml.dll,set_handler_endcomment,demo endcmt)
    alias endcmt {
      ; $1 = demo
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'une ligne de commentaire dans le XML sera rencontrée.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit les paramètres: <name> <comment>

    Exemple:
    <!-- XML -->
    <!-- commentaire
      autre ligne de commentaire -->
    
    ; mIRC
    $dll(xml.dll,set_handler_comment,demo cmt)
    alias cmt {
      ; $1 = demo
      ; $2- = valeur de la ligne de commentaire courante
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'un début de données CDATA sera rencontré.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit le paramètre: <name>

    Exemple:
    <!-- XML -->
    <![CDATA[ debut de CDATA
    
    ; mIRC
    $dll(xml.dll,set_handler_startcdata,demo startcdat)
    alias startcdat {
      ; $1 = demo
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'une fin de données CDATA sera rencontrée.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit le paramètre: <name>

    Exemple:
    <!-- XML -->
    fin de CDATA ]]>
    
    ; mIRC
    $dll(xml.dll,set_handler_endcdata,demo endcdat)
    alias enddat {
      ; $1 = demo
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'une ligne de données CDATA sera rencontrée.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit les paramètres: <name> <cdata>

    Exemple:
    <!-- XML -->
    <![CDATA[
      CDATA
      autre ligne de CDATA
    ]]>
    
    ; mIRC
    $dll(xml.dll,set_handler_cdata,demo cdat)
    alias cdat {
      ; $1 = demo
      ; $2- = valeur de la ligne de CDATA courante
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'un début de processing instructions sera rencontré. La déclaration d'un document XML <?xml .. ?> n'est pas affectée par cet évenement, mais par set_handler_xmldecl

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit le paramètre: <name>

    Exemple:
    <!-- XML -->
    <?spec debut de processing instructions
    
    ; mIRC
    $dll(xml.dll,set_handler_startprocessing,demo startprocess)
    alias startprocess {
      ; $1 = demo
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'une fin de processing instructions sera rencontrée.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit le paramètre: <name>

    Exemple:
    <!-- XML -->
    fin de processing instructions ?>
    
    ; mIRC
    $dll(xml.dll,set_handler_endprocesing,demo endprocess)
    alias endprocess {
      ; $1 = demo
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'une ligne de processing instructions sera rencontrée.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit les paramètres: <name> <processingdata>

    Exemple:
    <!-- XML -->
    <?spec processing instructions
      autre ligne de processing instructions
    ?>
    
    ; mIRC
    $dll(xml.dll,set_handler_processing,demo process)
    alias process {
      ; $1 = demo
      ; $2- = valeur de la ligne de processing instruction courante
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'un début d'entitée SGML non prise en compte par les diverses fonctions précédentes sera rencontré. Il peut s'agir par exemple de déclaration DTD: <!(ENTITY | DOCTYPE .. ) .. >.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit le paramètre: <name>

    Exemple:
    <!-- XML -->
    <!ELEMENT debut d'entitée 'SGML' par défaut
    
    ; mIRC
    $dll(xml.dll,set_handler_startdefault,demo startdef)
    alias startdef {
      ; $1 = demo
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'une fin d'entitée SGML non prise en compte par les diverses fonctions précédentes sera rencontrée.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit le paramètre: <name>

    Exemple:
    <!-- XML -->
    fin d'entitée 'SGML' par défaut >
    
    ; mIRC
    $dll(xml.dll,set_handler_enddefault,demo enddef)
    alias enddef {
      ; $1 = demo
    }
    


    Associe une alias mIRC que le parser appellera chaque fois qu'une ligne d'entitée SGML non prise en compte par les diverses fonctions précédentes sera rencontrée.

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit les paramètres: <name> <defaultdata>

    Exemple:
    <!-- XML -->
    <!ELEMENT BL0X - O EMPTY 
      -- client-side blah map bl0x -->
    
    ; mIRC
    $dll(xml.dll,set_handler_default,demo def)
    alias def {
      ; $1 = demo
      ; $2- = valeur de la ligne d'entitée par default courante
    }
    


    Associe une alias mIRC que le parser appellera si une declaration XML est présente dans le document:
    <?xml version="ver" [encoding="enc"] [standalone="(yes|no)"] ?>

    La fonction retourne S_OK ou en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS

    handler_alias recoit les paramètres: <name> <version> <encoding> <standalone>

    Exemple:
    <?xml version="1.0" 
          encoding="ISO-8859-1" ?>
    
    ; mIRC
    $dll(xml.dll,set_handler_xmldecl,demo xmld)
    alias xmld {
      ; $1 = demo
      ; version: default 1.0
      ; $2 = 1.0
      ; encoding: default UTF-8
      ; $3 = ISO-8859-1
      ; standalone: default 1, 0 si standalone="no"
      ; $4 = 1
    }
    


    Retourne l'alias mIRC précédement configurée avec set_handler_startelement. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_endelement. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_attribute. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_startchardata. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_endchardata. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_chardata. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_startcomment. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_endcomment. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_comment. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_startcdata. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_endcdata. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_cdata. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_startprocessing. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_endprocessing. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_processing. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_startdefault. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_enddefault. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_default. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne l'alias mIRC précédement configurée avec set_handler_xmldecl. Si aucune alias n'est associée, la fonction ne retourne rien.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS


    Retourne le path absolu dans la hierarchie du XML à un instant donné pendant le parsing du fichier ou du buffer. Le path retourné est de la forme:
    element1/element2/../elementN
    Le char "/" est employé comme tokenizer d'éléments.
    Note: ce path absolu est mis à jour avant l'ouverture ou la fermeture de l'élément. Autrement dit, un élément d'ouverture figurera dans ce path (en dernier token) alors qu'un élément de fermeture n'y figurera plus.

    La fonction retourne en cas d'erreur: E_INVALID_PARSER, E_INVALID_PARAMETERS



  • Autres Fonctions
  • Retourne quelques informations à propos du DLL: nom, version, auteur, contact.


    Retourne uniquement la version du DLL.




    Exemple de Script mIRC

    Fichier XML:
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    
    <!-- xmldemo.xml -->
    
    <config>
    
      <server name="webnet">
        <address port="6667-7000">irc.webmatser.com</address>
        <nick>sax</nick>
        <perform type="on connect">
          <![CDATA[
            mode $me -nMpe
            ns identify sax mypass
          ]]>
        </perform>
      </server>
    
      <server name="localhost">
        <address>127.0.0.1</address>
      </server>
    
    </config>
    

    Script mIRC:
    ; /xmldemo
    
    alias xmldemo {
      ; dll and .xml files
      var %dll = $+(",$scriptdirxml.dll,")
      var %xml = $scriptdirxmldemo.xml
    
    
      var %w = @xmldemo
      window -a %w | clear %w
    
      if (!$isfile(%dll)) { echo %w Error - missing: %dll | return }
      if (!$isfile(%xml)) { echo %w Error - missing: %xml | return }
    
      ; parser name
      var %n = demo
    
      echo %w Creating parser %n
      var %a = $dll(%dll,create_parser,%n)
      if (%a != S_OK) { echo %w Error - create_parser: %a | return }
    
      echo %w Setting handler aliases (commandes)
      dll %dll set_handler_xmldecl %n hxmldecl
      dll %dll set_handler_startelement %n hstartelement
      dll %dll set_handler_endelement %n hendelement
      dll %dll set_handler_attribute %n hattribute
      dll %dll set_handler_chardata %n hchardata
      dll %dll set_handler_cdata %n hcdata
    
      echo %w Setting XML file : %xml
      dll %dll set_file %n %xml
    
      ; global var: dll pathname will be use in start and end element handlers
      %xmldemo.dll = %dll
    
      echo %w Parsing :
      linesep %w
      var %a = $dll(%dll,parse_file,%n)
      if (%a != S_OK) { echo -a Error - parse_file: %a }
    
      linesep %w
      echo %w Deleting parser %n
      dll %dll free_parser %n
    
      ; unsets global var
      unset %xmldemo.*
    }
    
    ; handler aliases (non local)
    
    alias hxmldecl {
      echo @xmldemo XMLdecl (version, encoding, standalone): $2-
    }
    
    alias hstartelement {
      echo $color(notice) @xmldemo Startelement: $2 ( $dll(%xmldemo.dll,get_abspath,$1) )
    }
    
    alias hendelement {
      echo $color(notice) @xmldemo Endelement: $2 ( $dll(%xmldemo.dll,get_abspath,$1) )
    }
    
    alias hattribute {
      echo $color(join) @xmldemo Attribute: $2-
    }
    
    alias hchardata {
      echo @xmldemo Chardata: $2-
    }
    
    alias hcdata {
      echo @xmldemo CDATA: $2-
    }
    




    Versions Changes

    xml.dll 0.1.1 - June 2003
    - Implémentation en C++.
    - Amélioration des algorithmes de parsing.
    - Meilleur allocation et gestion de la mémoire.
    - Ajout de nombreuses handlers fonctions.
    - Chaque fonction set_* a son équivalent get_*
    - Renommage des fonctions de la précédente version : - Fichier d'aide et référence traduit en francais.
    - Finalement, la taille du dll est réduite de 40% !

    xml.dll 0.0.1 - April 2003
    Première release.




    Auteur, Credits

    sax
    irc_x@hotmail.com
    www.ScriptsDB.org
    #scriptsdb.org @webnet @undernet

    Credits :
    W3C - XML Draft
    mIRC - load->mHwnd
    ClickHeRe - Testing, support
    + tous ceux qui ont fait des suggestions et autres remarques !


    Document rédigé par sax le 14/06/2003